{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "9a5a9a74-4519-40ca-8d5a-7fd3a6d5b6b9",
   "metadata": {},
   "source": [
    "# Introduction To Function Calling!\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "341ccbdf-42cc-4e51-a343-385ecf994077",
   "metadata": {},
   "source": [
    "### Writing A Local Python Tool"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "06e3e128-ed92-4555-8bd2-ed1b3e15dcea",
   "metadata": {
    "height": 149
   },
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "def plot_some_points(x : list, y : list):\n",
    "  \"\"\"\n",
    "  Plots some points!\n",
    "  \"\"\"\n",
    "  plt.plot(x, y)\n",
    "  plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9c52c5b4-ab33-44d5-8c30-3c5c9e04848c",
   "metadata": {
    "height": 30
   },
   "outputs": [],
   "source": [
    "USER_QUERY = \"Hey can you plot y=10x where x=1, 2, 3 for me?\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3599b238-a6f0-4911-aed8-5d20f3098ee5",
   "metadata": {
    "height": 30
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_some_points(x=[1, 2, 3], y=[10, 20, 30])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "29eb62ec-fac5-46fb-82b2-8d4b5b330d48",
   "metadata": {
    "height": 217
   },
   "outputs": [],
   "source": [
    "prompt = \\\n",
    "f'''\n",
    "Function:\n",
    "def plot_some_points(x : list, y : list):\n",
    "  \"\"\"\n",
    "  Plots some points!\n",
    "  \"\"\"\n",
    "  plt.plot(x, y)\n",
    "  plt.show()\n",
    "\n",
    "User Query: {USER_QUERY}<human_end>\n",
    "'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e3dd9ba2-e674-4dc1-b483-3907720a7642",
   "metadata": {
    "height": 47
   },
   "outputs": [],
   "source": [
    "from utils import query_raven\n",
    "function_call = query_raven(prompt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "71709bdf-a1d8-446f-b215-8cb6bb71a28a",
   "metadata": {
    "height": 30
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "plot_some_points(x=[1, 2, 3], y=[10, 20, 30])\n"
     ]
    }
   ],
   "source": [
    "print (function_call)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "65e8b372-78d7-43d3-9772-3c83d80db8f2",
   "metadata": {
    "height": 30
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "exec(function_call)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b5fc3460-8266-47c1-9dc5-7721ab962816",
   "metadata": {},
   "source": [
    "#### Try Your Own!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "b7e188d2-6d9a-43b5-b16e-ee48e88301e4",
   "metadata": {
    "height": 30
   },
   "outputs": [],
   "source": [
    "USER_QUERY = \"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6dfa73d3-445e-4153-90d1-7cbca1daf91e",
   "metadata": {
    "height": 251
   },
   "outputs": [],
   "source": [
    "prompt = \\\n",
    "f'''\n",
    "Function:\n",
    "def plot_some_points(x : list, y : list):\n",
    "  \"\"\"\n",
    "  Plots some points!\n",
    "  \"\"\"\n",
    "  plt.plot(x, y)\n",
    "  plt.show()\n",
    "\n",
    "User Query: {USER_QUERY}<human_end>\n",
    "'''\n",
    "from utils import query_raven\n",
    "function_call = query_raven(prompt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f4e43ecd-83c7-43ab-9aef-a50cd84def7e",
   "metadata": {
    "height": 30
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "bf31b770-0d54-43b1-a7c3-61099c9a4036",
   "metadata": {},
   "source": [
    "### Let's Try Another Example!"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff8d2609-71c0-4164-abf3-b74e8e1f2df5",
   "metadata": {},
   "source": [
    "#### Let's define a function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "83f7086e-eccb-46c7-a35b-716757a0bb47",
   "metadata": {
    "height": 812
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.patches as patches\n",
    "\n",
    "def draw_clown_face(face_color='yellow', eye_color='black', \n",
    "                    nose_color='red'):\n",
    "    \"\"\"\n",
    "    Draws a customizable, simplified clown face using matplotlib.\n",
    "\n",
    "    Parameters:\n",
    "    - face_color (str): Color of the clown's face. Default is 'yellow'.\n",
    "    - eye_color (str): Color of the clown's eyes. Default is 'black'.\n",
    "    - nose_color (str): Color of the clown's nose. Default is 'red'.\n",
    "\n",
    "    This function creates a plot displaying a simplified clown face, where essential facial features' size, position, and color can be customized. \n",
    "    \"\"\"\n",
    "    # Constants\n",
    "    face_radius = 0.4\n",
    "    nose_radius = 0.1\n",
    "    nose_x, nose_y = 0.5, 0.5\n",
    "    mouth_x, mouth_y = 0.5, 0.3\n",
    "    mouth_color = 'black'\n",
    "    eye_size = 0.05\n",
    "    mouth_size = (0.3, 0.1)\n",
    "    eye_offset=(0.15, 0.15)\n",
    "    mouth_theta = (200, 340)\n",
    "\n",
    "    fig, ax = plt.subplots()\n",
    "    # Face\n",
    "    face = patches.Circle((0.5, 0.5), face_radius, color=face_color, fill=True)\n",
    "    ax.add_patch(face)\n",
    "    # Eyes\n",
    "    eye_left = patches.Circle((0.5-eye_offset[0], 0.5+eye_offset[1]), eye_size, color=eye_color, fill=True)\n",
    "    eye_right = patches.Circle((0.5+eye_offset[0], 0.5+eye_offset[1]), eye_size, color=eye_color, fill=True)\n",
    "    ax.add_patch(eye_left)\n",
    "    ax.add_patch(eye_right)\n",
    "    # Nose\n",
    "    nose = patches.Circle((nose_x, nose_y), nose_radius, color=nose_color, fill=True)\n",
    "    ax.add_patch(nose)\n",
    "    # Mouth\n",
    "    mouth = patches.Arc((mouth_x, mouth_y), mouth_size[0], mouth_size[1], angle=0, \n",
    "                        theta1=mouth_theta[0], theta2=mouth_theta[1], color=mouth_color, linewidth=2)\n",
    "    ax.add_patch(mouth)\n",
    "    # Setting aspect ratio to 'equal' to ensure the face is circular\n",
    "    ax.set_aspect('equal')\n",
    "    # Remove axes\n",
    "    ax.axis('off')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d32b55ca-60f5-4646-a184-fd3d20b4f431",
   "metadata": {},
   "source": [
    "#### Let's Define A Prompt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "d9ea3eb0-baef-4cde-868f-2cb1f62e1f2e",
   "metadata": {
    "height": 387
   },
   "outputs": [],
   "source": [
    "USER_QUERY = \\\n",
    "\"Hey can you draw a pink clown face with a red nose\" \n",
    "\n",
    "raven_prompt = \\\n",
    "'''\n",
    "Function:\n",
    "def draw_clown_face(face_color='yellow', \n",
    "                    eye_color='black',\n",
    "                    nose_color='red'):\n",
    "    \"\"\"\n",
    "    Draws a customizable, simplified clown face using matplotlib.\n",
    "\n",
    "    Parameters:\n",
    "    - face_color (str): Color of the clown's face.\n",
    "    - eye_color (str): Color of the clown's eyes.\n",
    "    - nose_color (str): Color of the clown's nose.\n",
    "    \"\"\"\n",
    "\n",
    "User Query: {query}<human_end>\n",
    "'''\n",
    "raven_prompt_with_query = raven_prompt.format(query=USER_QUERY)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d1ccdb8f-776e-4f2f-9894-2cdac7c988f6",
   "metadata": {
    "height": 30
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Function:\n",
      "def draw_clown_face(face_color='yellow', \n",
      "                    eye_color='black',\n",
      "                    nose_color='red'):\n",
      "    \"\"\"\n",
      "    Draws a customizable, simplified clown face using matplotlib.\n",
      "\n",
      "    Parameters:\n",
      "    - face_color (str): Color of the clown's face.\n",
      "    - eye_color (str): Color of the clown's eyes.\n",
      "    - nose_color (str): Color of the clown's nose.\n",
      "    \"\"\"\n",
      "\n",
      "User Query: Hey can you draw a pink clown face with a red nose<human_end>\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print (raven_prompt_with_query)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d647732a-f5d3-449d-b3e4-6bf3ac4e0173",
   "metadata": {
    "height": 64
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "draw_clown_face(face_color='pink', nose_color='red')\n"
     ]
    }
   ],
   "source": [
    "from utils import query_raven\n",
    "raven_call = query_raven(raven_prompt_with_query)\n",
    "print (raven_call)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6600282e-adc3-451b-86fd-abffc99c9a8c",
   "metadata": {},
   "source": [
    "#### Let's Run The Call"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "889012ee-61fd-424f-99a0-323d80488403",
   "metadata": {
    "height": 30
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "exec(raven_call)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7dd944b7-dc29-4d39-a933-8a6884b29459",
   "metadata": {},
   "source": [
    "#### Make Your Own Clown!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "70575e53-b6bb-43d5-8124-fe5548342746",
   "metadata": {
    "height": 132
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "draw_clown_face(face_color='red', eye_color='blue', nose_color='green')\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "USER_QUERY = \"\"\n",
    "raven_prompt_with_query = raven_prompt.format(query=USER_QUERY)\n",
    "\n",
    "from utils import query_raven\n",
    "raven_call = query_raven(raven_prompt_with_query)\n",
    "print (raven_call)\n",
    "exec(raven_call)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a924a827-3315-4520-8371-d5a1afd525b6",
   "metadata": {},
   "source": [
    "#### Using OpenAI FC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "752c6644-9086-465b-9493-62f1d8971774",
   "metadata": {
    "height": 302
   },
   "outputs": [],
   "source": [
    "import json\n",
    "from openai import OpenAI\n",
    "from dotenv import load_dotenv\n",
    "import os\n",
    "\n",
    "_ = load_dotenv()\n",
    "\n",
    "def query_openai(msg, functions=None):\n",
    "  load_dotenv()\n",
    "  GPT_MODEL = \"gpt-3.5-turbo\"\n",
    "\n",
    "  openai_client = OpenAI(api_key=os.environ[\"OPENAI_API_KEY\"])\n",
    "  openai_response = openai_client.chat.completions.create(\n",
    "    model = GPT_MODEL,\n",
    "    messages = [{'role': 'user', 'content': msg}],\n",
    "    tools = functions)\n",
    "  return openai_response"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "779c7540-7426-4199-8a34-6fe8f18aa08e",
   "metadata": {
    "height": 472
   },
   "outputs": [],
   "source": [
    "openai_function = {\n",
    "  \"type\": \"function\",\n",
    "  \"function\": {\n",
    "    \"name\": \"draw_clown_face\",\n",
    "    \"description\": \"Draws a customizable, simplified clown face using matplotlib.\",\n",
    "    \"parameters\": {\n",
    "      \"type\": \"object\",\n",
    "      \"properties\": {\n",
    "        \"face_color\": {\n",
    "          \"type\": \"string\",\n",
    "          \"description\": \"Color of the clown's face.\"\n",
    "        },\n",
    "        \"eye_color\": {\n",
    "          \"type\": \"string\",\n",
    "          \"description\": \"Color of the clown's eyes.\"\n",
    "        },\n",
    "        \"nose_color\": {\n",
    "          \"type\": \"string\",\n",
    "          \"description\": \"Color of the clown's nose.\"\n",
    "        }\n",
    "        }\n",
    "      }\n",
    "    }\n",
    "  }\n",
    "\n",
    "openai_msg = \\\n",
    "\"Hey can you draw a pink clown face with a red nose\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "487db628-adbb-499c-bfe5-29219a41dc82",
   "metadata": {
    "height": 47
   },
   "outputs": [],
   "source": [
    "result = query_openai(openai_msg, functions=[openai_function])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5c23bdc0-16eb-46bb-885f-cf8a4d214201",
   "metadata": {
    "height": 30
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Function(arguments='{\"face_color\": \"pink\", \"eye_color\": \"black\", \"nose_color\": \"red\"}', name='draw_clown_face')\n"
     ]
    }
   ],
   "source": [
    "print (result.choices[0].message.tool_calls[0].function)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "854b0bc1-7762-49ff-af44-80a064f87a8d",
   "metadata": {
    "height": 64
   },
   "outputs": [],
   "source": [
    "tool_name = result.choices[0].message.tool_calls[0].function.name\n",
    "tool_args = result.choices[0].message.tool_calls[0].function.arguments\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "78458b2b-6dc8-420c-b78d-c88d4efecd0f",
   "metadata": {
    "height": 47
   },
   "outputs": [],
   "source": [
    "function_call = f\"{tool_name}(**{tool_args})\"\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "8f09c84e-4a10-41bc-8d7f-238eed1ecb4a",
   "metadata": {
    "height": 30
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "draw_clown_face(**{\"face_color\": \"pink\", \"eye_color\": \"black\", \"nose_color\": \"red\"})\n"
     ]
    }
   ],
   "source": [
    "print (function_call)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "347a4c0b-1831-483c-8221-3112a29a4433",
   "metadata": {
    "height": 30
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "exec(function_call)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "587204e4-ce73-4eae-855e-ef0d06654670",
   "metadata": {
    "height": 30
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
